Coordination of data received from one or more sources over one or more channels into a single context

ABSTRACT

A middleware messaging system is connected between user devices and content providers possibly through one or more networks. The middleware messaging system includes a coordination manager for coordinating partial messages transmitted between the user devices and the content providers. Partial messages received by the middleware messaging system from one or more sources through one or more channels. Partial messages that are associated with each other comprise a single context and as such are coordinated and transmitted to one or more destinations through one or more channels.

CROSS REFERENCE

This Application is a Continuation of U.S. Ser. No. 14/740,428, filedJun. 16, 2015, which is a Continuation of U.S. Ser. No. 12/007,949, nowU.S. Pat. No. 9,081,844, filed on Jan. 17, 2008, which is a continuationof U.S. Ser. No. 10/265,740, filed on Oct. 8, 2002, now U.S. Pat. No.7,426,535, the entireties of which are expressly incorporated byreference.

FIELD OF THE INVENTION

The invention is generally related to computer networks. Moreparticularly, the invention is related to data coordination.

BACKGROUND OF THE INVENTION

In today's information age, a user may use one or more devices toretrieve desired information. For example, a user may use a cellularphone, personal digital assistant, lap top, etc., to retrieveinformation from a content provider over one or more networks. Thesedevices may include multimodal applications that receive/transmitinformation through one or more channels (i.e., paths on which signalsmay flow). For example, an application may transmit voice on onechannel, text on another channel, images on another channel, etc.

Different requests may also travel on different channels. On the otherhand, an application may transmit both voice and data on the samechannel.

Regardless of the number of channels, these multimodal applicationsexemplify the requirement of coordinated input from one or more devices.For example, a user may input part of a single request through a firstmodality, and the rest through a second modality.

Without a system to recognize that these request fragments contribute toa single request (i.e., the input is not coordinated), it is notpossible to correctly service the request. Therefore, regardless ofwhether fragments of a request, fragments of a response, fragments froma “front-end,” or fragments from a “back-end” are received, coordinationof the fragments into a single context allows for the proper servicingof the data composed from the fragments.

SUMMARY OF THE INVENTION

An embodiment of the invention includes a method for coordinating datafrom one or more sources. The method comprises steps of receiving data;determining whether the received data is partial data, wherein partialdata includes data to be coordinated with other received data (i.e.,partial data is a fragment of the complete data); and coordinating thereceived data with associated data in response to the received databeing partial data. The associated data may be received before or afterthe received partial data.

Another embodiment of the invention includes a method of coordinatingdata received from one or more sources through one or more channels. Thedata includes data being transmitted to one or more destinations. Themethod comprises steps of receiving the data; determining whether thereceived data is partial data, wherein partial data includes data to becoordinated with other received data (i.e., partial data is a fragmentof the complete data); and coordinating the received data withassociated data in response to the received data being partial data. Theassociated data may be received before or after the received partialdata.

Yet another embodiment of the invention includes a system comprising aplurality of user devices connected to a plurality of content providersthrough one or more networks. Messages transmitted between the pluralityof user devices and the plurality of contents providers are received bya coordination manager. The coordination manager coordinates themessages that are associated with each other such that the coordinatedmessages are combined into a single message (i.e., context).

The methods of the present invention include steps that may be performedby computer-executable instructions executing on a computer-readablemedium.

Those skilled in the art will appreciate these and other aspects ofvarious embodiments of the invention upon reading the following detaileddescription of a preferred embodiment with reference to the below-listeddrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the accompanying figures in which like numeral referencesrefer to like elements, and wherein:

FIG. 1 illustrates a block-diagram of an exemplary system according toan embodiment of the invention; and

FIG. 2 illustrates a flow chart of an exemplary method according to anembodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

In the following detailed description, numerous specific details are setforth in order to provide a thorough understanding of the presentinvention. However, it will be apparent to one of ordinary skill in theart that these specific details need not be used to practice the presentinvention. In other instances, well known structures, interfaces, andprocesses have not been shown in detail in order not to unnecessarilyobscure the present invention.

FIG. 1 illustrates an exemplary system 100 according to an embodiment ofthe invention. A plurality of user devices 110 a . . . n are connectedto application servers 120 a . . . k through a middleware messagingsystem (MMS) 130. The user devices 110 a . . . n may include anyconventional computing device, such as a laptop, personal computer (PC),work station, PDA, cellular phone, wired phone, pocket PC, e-mailretrieval device, etc. The user devices 110 a . . . n may transmitrequests for data via one or more networks, such as networks 140 a . . .i, to the MMS 130. The networks 140 a . . . i may include wired orwireless networks using one or more protocols to transmit data. Networkadaptors 150 a . . . m connected to the MMS 130 include ports forreceiving/transmitting data. The network adaptors 150 a . . . m maysupport different protocols to accommodate the different networks 140 a. . . i. The application servers 120 a . . . k may be directly connectedto the MMS. 130 or connected through one or more networks, which mayinclude the networks 140 a . . . i. The application servers 120 a . . .k provide content to the user devices 110 a . . . n. For example, datamay be transmitted to the user device 110 a from the application servers120 a and 120 b via the MMS 130 in response to a user request for data.The MMS 130 may include conventional means for receiving data from theapplication servers 120 a . . . k.

The MMS 130 includes a coordination manager 160 for coordinating datafrom one or more sources. The coordination manager 160 coordinates datathat may be received from one or more devices on one or more channels.For example, data received from one or more user devices (e.g., userdevices 110 a and/or 110 b) may be coordinated; data received from oneor more servers (e.g., application servers 120 a and/or 120 b) may becoordinated; and data received from a user device and a server may becoordinated (e.g., user device 110 and application sever 120 a). Thedata may be received on one or more channels.

The data to be coordinated is data comprising parts of a single context.Data may be coordinated for a request or a response. For example, thedata to be coordinated can be all the data that is needed to make arequest, or the data to be coordinated can be all the data needed torespond to a request.

The coordination manager 160 may be connected to a database 162 forstoring data to be coordinated. When data to be coordinated (i.e.,partial data) is received by the coordination manager 160, the partialdata may be stored in the database 162. Also, partial data may beretrieved from the database 162 and then coordinated with newly receivedother data.

The coordination manager 160 may include one or more servers. A computerprogram for coordinating messages may be stored and executed on the oneor more servers. The coordination manager 160 is not limited to serversand may include other computing devices having one or more processors.

An example of coordinating data is as follows. A user desires to locatea restaurant by asking for directions from a current location via awireless device (e.g., a cellular phone, which may be user device 110a). In doing so, data about his current location must eventually becomepart of the request. Thus, if the user is speaking through his phone tothe system 100 and says “I'd like directions to a restaurant within 10miles of my current location”, the user is only providing a partialrequest, which is transmitted to the coordination manager 160 through achannel. In addition, data supplied by the user's GPS device, forinstance, provides the remainder of the necessary data (i.e., thedevice's, and hence, the user's location), which is transmitted to thecoordination manager 160 through another channel. In another example,the user may point to a restaurant destination on a touch-sensitivemonitor in his car. The destination information may then be transmittedto the coordination manager 160 through yet another channel.

The coordination manager 160 may receive the first request from thecellular phone (e.g., 110 a). Before transmitting the request to anapplication server (e.g., application server 120 a) that can provide therequested data, the coordination manager 160 waits until all the datafor the request (e.g., the GPS information or the destinationinformation provided separately via the car monitor) is received andcompiled. Partial request data may be stored by the coordination manager160 in the database 162 until all request data is received. After allrequest data is received and compiled, the coordination manager 160transmits the request to the application server 120 a.

The data that is coordinated by the coordination manager 160 need not beprovided from a user device. Some or all the data may be provided fromother sources. For example, the user may have user preferences, such aspreferring a particular type of food, stored on a server (e.g.,application server 120 b) connected to the MMS 130. The applicationserver 120 b may transmit the user's restaurant-related preferences tothe coordination manager 160. The coordination manager 160 waits untilthis information is received, as well as the user's location, etc., suchthat all the request data may be transmitted to the application server120 a using, for example, a single message.

Data parts may be compiled, that is combined into a single coordinateddata message and then transmitted to one or more destinations. The datamay be transmitted over a network using a protocol establishedbeforehand between the two systems.

The coordination manager 160 can coordinate data being transmitted to auser's device on one or more channels. For example, in response to auser's request to order a list of books, a number of application serversmay need to be contacted to establish the availability of each book. Thecoordination manager 160 coordinates all the responses from all theapplication servers into a single response to present to the user overany number of channels.

It will be apparent to one of ordinary skill in the art that theseexamples are provided by way of illustration and not of limitation. Inaddition, the coordination manager 160 may coordinate data received fromone or more sources on one or more channels. Furthermore, thecoordinated data may be transmitted to one or more destinations on oneor more channels. The coordinated data may include requests for data orresponses to requests for data or other messages.

The coordination manager 160 may coordinate data based upon a variety oftechniques that are largely implementation dependent. In one embodiment,message header information may identify that data contained in themessage's body is only part of a request and is to be coordinated. Forexample, the data received from the user's cellular phone may include aheader that indicates that the contained data is the positioninformation that is to be coordinated with the user's request fordirections (from the user's current location). In another embodiment, anextensible markup language (XML) document containing a partial request,perhaps corresponding to an XML document type definition (DTD) orSchema, may include information that identifies the data (e.g., sourceand requested information expected from the source) to be coordinated.

Other coordination techniques known to one of ordinary skill in the artmay be implemented without departing from the spirit and scope of theinvention. Furthermore, using header information, information in the XMLdocument or other techniques, the coordination manager 160 may determinewhether received data needs to be coordinated or whether specific datacomprises a complete request that does not need to be coordinated.

FIG. 2 illustrates an exemplary method 200 according to an embodiment ofthe invention. In step 205, the coordination manager 160 waits forincoming data. In step 210, the coordination manager 160 receives data.

In step 215, the coordination manager 160 determines whether thereceived data is partial data (i.e., data to be coordinated with otherdata). This determination may be performed, for example, using XMLdocument requests, DTDs and/or header information. Partial data mayeventually be coordinated with other associated partial data.

In step 220, if the received data is not partial data, the data istransmitted to a destination, such as a user device (e.g., user device110 a), an application server (e.g., application server 120 a), etc. Instep 225, if the received data is partial data, the coordination manager160 determines whether associated data (i.e., any other partial data tobe coordinated with the data received in step 210) has been received bythe coordination manager 160. For example, the coordination manager 160stores partial data in the database 162. The coordination manager 160determines whether associated partial data is stored in the database162.

In step 230, if associated data has been received, the coordinationmanager 160 aggregates the partial data received in step 210 with theassociated data, for example, after the associated data has beenretrieved from the database 162. This process continues iteratively asdescribed below.

In step 240, if associate data has not been received (as determined instep 225), the partial data is stored in the database 162 and associateddata subsequently received is eventually aggregated with the storedpartial data. The aggregated data may also be stored in the database162.

After the partial data is aggregated in step 230, the coordinationmanager determines whether all the partial data to be coordinated hasbeen received (step 235). This determination may be performed, forexample, using XML document requests, DTDs and/or header information.

If all the data to be coordinated has been received, the coordinationmanager 160 sends the coordinated data to its destination(s) (step 250).If all the data to be coordinated has not been received, thecoordination manager 160 stores the partial data received in step 210 inthe database (step 240). Then, the coordination manager 160 determineswhether a request for more partial data should be initiated (step 245).For example, a certain data state may be associated with a need torequest more data from specific source(s). If the coordination manager160 detects the data state, it requests data from one or more sources.

If the coordination manager 160 determines that a request should beinitiated, the request is initiated (step 255). The coordination manager160 generates the request and transmits the request to a contentprovider or other destination that can provide the requestedinformation. Then, the coordination manager 160 waits for incoming data.If a request need not be initiated, as determined in step 245, thecoordination manager 160 waits for further incoming data.

The method 200 can be performed by a computer program. That is, thesteps performed by the coordination manager 160 can be performed by acomputer program. The computer program can exist in a variety of formsboth active and inactive. For example, the computer program and objectscan exist as software comprised of program instructions or statements insource code, object code, executable code or other formats; or firmwareprogram(s). Any of the above can be embodied on a computer readablemedium, which include storage devices and signals, in compressed oruncompressed form. Exemplary computer readable storage devices includeconventional computer system RAM (random access memory), ROM (read onlymemory), EPROM (erasable, programmable ROM), EEPROM (electricallyerasable, programmable ROM), and magnetic or optical disks or tapes.Exemplary computer readable signals, whether modulated using a carrieror not, are signals that a computer system hosting or running thecomputer program can be configured to access, including signalsdownloaded through the Internet or other networks. Concrete examples ofthe foregoing include distribution of executable software program(s) ofthe computer program on a CD ROM or via Internet download. In a sense,the Internet itself, as an abstract entity, is a computer readablemedium. The same is true of computer networks in general.

While this invention has been described in conjunction with the specificembodiments thereof, it is evident that many alternatives, modificationsand variations will be apparent to those skilled in the art. There arechanges that may be made without departing from the spirit and scope ofthe invention.

We claim:
 1. A method at a user device comprising: receiving, by theuser device, an audio request for information via a multimodalapplication of the user device, the audio request comprising partialdata, the partial data being a fragment of complete data for a computingdevice to provide complete information corresponding to the audiorequest; transmitting, by the user device, the partial data to a remotecomputer system, the remote computer system comprising a coordinationmanagement computer system; receiving, by the user device from theremote computer system, a request for associated data that is associatedwith the partial data, wherein the associated data is to be compliedwith the partial data to provide the complete information correspondingto the audio request; responsive to the received request for theassociated data, transmitting, by the user device, the associated datato the remote computer system; receiving, by the user device, thecomplete information corresponding to the audio request, the completeinformation comprising the associated data combined with the partialdata; and presenting, by the user device, the complete informationcorresponding to the audio request via at least one interface componentof the user device.
 2. The method of claim 1, wherein the remotecomputer system comprises a plurality of servers.
 3. The method of claim1, further comprising: receiving, by the user device, a request formissing data, from the remote computer system, wherein the request formissing data is sent from the remote computer system after the remotecomputer system establishing that not all data, needed to be compiled toprovide the complete information corresponding to the audio request, hasbeen received.
 4. The method of claim 3, further comprising: sending, bythe user device, the missing data to the remote computer system.
 5. Themethod of claim 1, wherein the receiving the complete informationcorresponding to the audio request includes receiving the completeinformation corresponding to the audio request after missing data andthe associated data are combined with the partial data.
 6. The method ofclaim 5, wherein the missing data is obtained from one or more sources.7. The method of claim 1, wherein the associated data is in the form oftext.
 8. The method of claim 1, wherein the user device is a mobilephone.
 9. The method of claim 1, wherein the associated data includeslocation information of the user device.
 10. The method of claim 9,wherein the location information of the user device is derived from aGlobal Positioning System (GPS) device.
 11. The method of claim 1,wherein the complete information corresponding to the audio requestcomprises a response to the audio request for information.
 12. Themethod of claim 1, wherein the presenting comprises presenting thecomplete information corresponding to the audio request in a visualformat via the at least one interface component of the user device. 13.The method of claim 1, wherein the presenting comprises presenting thecomplete information corresponding to the audio request in an audibleformat via the at least one interface component of the user device. 14.The method of claim 1, wherein the presenting comprises presenting thecomplete information corresponding to the audio request in a visual andaudible format via the at least one interface component of the userdevice.
 15. A user device, comprising: a memory; one or more processorsconnected to the memory, wherein the one or more processors areconfigured to: receive an audio request for information via a multimodalapplication, the audio request comprising partial data, the partial databeing a fragment of complete data for a computing device to providecomplete information corresponding to the audio request, transmit thepartial data to a remote computer system, the remote computer systemcomprising a coordination management computer system, receive from theremote computer system a request for associated data that is associatedwith the partial data, wherein the associated data is to be compliedwith the partial data to provide the complete information correspondingto the audio request, responsive to the received request for theassociated data, transmit the associated data to the remote computersystem, and receive the complete information corresponding to the audiorequest, the complete information comprising the associated datacombined with the partial data; and at least one interface componentconfigured to present the complete information corresponding to theaudio request in a visual and/or audible format.
 16. The user device ofclaim 15, wherein the one or more processors are further configured toreceive a request for missing data, from the remote computer system,wherein the request for missing data is sent from the remote computersystem after the remote computer system establishing that not all data,needed to be complied to provide the complete information correspondingto the audio request, has been received.
 17. The user device of claim16, wherein the one or more processors are further configured totransmit the missing data to the remote computer system.
 18. The userdevice of claim 15, wherein the associated data is in the form of text.19. The user device of claim 15, wherein the user device is a mobilephone.
 20. The user device of claim 15, wherein the associated dataincludes location information of the user device.
 21. The user device ofclaim 20, wherein the location information of the user device is derivedfrom a Global Positioning System (GPS) device.
 22. The user device ofclaim 15, the complete information corresponding to the audio requestcomprises a response to the audio request for information.
 23. Anon-transitory computer-readable medium that stores instructions that,in response to execution, cause a user device to perform or controlperformance of operations comprising: receive, by the user device, anaudio request for information via a multimodal application of the userdevice, the audio request comprising partial data, the partial databeing a fragment of complete data for a computing device to providecomplete information corresponding the audio request; transmit, by theuser device, the partial data to a remote computer system, the remotecomputer system comprising a coordination management computer system;receive, by the user device, from the remote computer system, a requestfor associated data that is associated with the partial data, whereinthe associated data is to be compiled with the partial data to providethe complete information corresponding to the audio request; responsiveto the received request for the associated data, transmit, by the userdevice, the associated data to the remote computer system; receive, bythe user device, the complete information corresponding to the audiorequest, the complete information comprising the associated datacombined with the partial data; and present, by the user device, thecomplete information corresponding to the audio request in a visualand/or audible format via at least one interface component of the userdevice.